perm filename XX[7,ALS] blob
sn#032371 filedate 1973-04-02 generic text, type T, neo UTF8
00100 COMMENT ⊗ VALID 00004 PAGES
00200 C REC PAGE DESCRIPTION
00300 C00001 00001
00400 C00002 00002 \|$$M1NGR30$M2BDI25$M3CTL25$M4NGB25$MFFIX25$MCFOOBAZ$.
00500 C00008 00003 $F2$CThis writeup is $F1MRPP3.WRU[XGP,REM] $F31973 APR 01 0703 p.2
00600 C00013 00004 $F2$CThis writeup is $F1MRPP3.WRU[XGP,REM] $F31973 APR 01 0703 p.3
00700 C00015 ENDMK
00800 C⊗;
00100 \|$$M1NGR30;$M2BDI25;$M3CTL25;$M4NGB25;$MFFIX25;$MCFOOBAZ[2,REM]$.
00200 $F2$CThis writeup is $F1MRPP3.WRU[XGP,REM] $F31973 APR 01 0703 p.1
00300
00400 $F3$CMaas Research Paper Plotter program, version 3 (earlier versions in 1969 used Calcomp 565)
00500 $F2$CProgram to switch fonts and justify text, by Robert Elton Maas, 1973 March
00600 $CThe system command to run this program is $F1RU MRPP3[XGP,REM]
00700
00800 $F3$J The program asks for a command string of
00900 the form <OUTPUT FILE>←<INPUT FILE> with perhaps switches after the input file name.
01000 The input file must not contain line numbers,
01100 but may contain a TV-EDIT directory which will be ignored.
01200 It may also contain XGP escape characters (RUBOUT followed by ↓ or α)
01300 at most places in the file.
01400 The output file will be in a form that can be copied directly to the
01500 XGP in mode 0 by means of the "XG" command,
01600 and in addition there will be a file QQXGP.RPG
01700 written, which contains the font switches needed for listing the file
01800 on the XGP. Upon exit, it will put $F1XG @QQXGP.RPG
01900 $F3into your TTY buffer so that all you have to do is hit carriage return
02000 to gronk the XGP.
02100 The first character of the input file will be interpreted as the
02200 escape character you wish to use initially.
02300 (In the remainder of this writeup, the character $FC1$F3 represents whatever
02400 Escape Character you have in effect at the moment.)
02500 Subsequent occurrances
02600 of this character will escape to command mode and
02700 cause special things to happen depending on the next character (see below).
02800 If, however, the second character of your file is | or . then this program will
02900 assume you left out the initial definition of the break character, and will
03000 retroactively escape on the first character.
03100 Using this feature allows you to create files that may be
03200 concatinated without re-editing anything.
03300 Simply begin each file
03400 with $FC1$F3|$FC1$F3 or $FC1$F3.<crlf>
03500 and delete directory pages whenever concatinating.
03600 Below is a list of commands, where
03700 $F4<N>$F3 represents a character in the range of 0,1,2,...,9,A,B,...,F
03800 that specifies the font ID number,
03900 $F4<KH>$F3 represents any character,
04000 and $F4<FONT>$F3 represents a font filename (defaults are .FNT[XGP,SYS])$.
04100
04200 $←R$-L$/'4;$→w$+L$→l$←w$/'2;$¬R$→r$.
04300 $FC1$FF|<KH> $j$F3(changes the escape character to <CHARACTER>)$.
04400 $FC1$FFM<N><FONT>; $j$F3(causes the font to be compiled, and selects it now)$.
04500 $FC1$FFF<N> $j$F3(selects a font which has already been compiled)$.
04600 $FC1$FFS $j$F3(generates a sample of the currently-selected font, see bulletin board)$.
04700 $FC1$FF. $j$F3(everything until next crlf is a comment, typed on tty but not included in output file)$.
04800 $FC11 $j$F3(quotes the escape character, same kludge as "" in FORTRAN or ALGOL)$.
04900 $FC1$FFJ $j$F3(begins full-justify submode, use $FC1$F3. to get out of it. While in this
05000 mode, the only escape command (either rubout-style or $FC1$F3-style)
05100 that is legal is "change font")$.
05200 $FC1$FFC $j$F3(begins center-the-line mode, until the next line feed occurs)$.
05300
05400 $F4Commands not yet implemented:
05500 $FC1$FFf<N> $j$F3(selects a font for just one character, then back to old font)$.
05600 $FC1$FFR $j$F3(begins align-text-against-right-margin-mode,
05700 until the next line feed occurs)$.
05800 $FC1$FF≡ $j$F3(begins "pass exactly as-is" mode, suppresses
05900 /XJ mode until $FC1$FF.$F3 occurs)$.
06000
06100 $F4Switches not yet implemented:
06200 $FF/XAPJUS $j$F3(no command characters, will replace XAPJUS.SAI 2-way mode)$.
06300 $FF/XJ $j$F3(unless in paragraph, center, right-align, or as-it-is
06400 mode, text will be parsed by xapjus scanner)$.
06500
06600
00100 $F2$CThis writeup is $F1MRPP3.WRU[XGP,REM] $F31973 APR 01 0703 p.2
00200
00300 $F1 Q-REGISTERS
00400 $F3$J There are 128 registers which can hold any 36-bit integer,
00500 usually the horizonal coordinate of some column on the page.
00600 The idea is to allow specification of multi-column tables and
00700 $F2superscripts-above-subscripts$F3 in an easy and flexable way,
00800 including automatic allocation of such things as "$F21/5 of a page$F3"
00900 by simple division. Each register is specified by an ASCII
01000 character, hence some registers are actually inaccessible, but
01100 who cares? Register 0 (null character, inaccessible usually) is
01200 called the "$F2accumulator$F3" and is the intermediate storage for
01300 all sequences of arithmetic calculation. Register '56 (the period
01400 character) always represents the current column location.
01500 Every time a character is written, this q-register is updated to
01600 account for the space used up by the character, and if you try to
01700 write in this q-register, a column select will be generated in
01800 your output file as well as updating the q-register to reflect
01900 the column select.
02000 Q-reg's L and R are the LEFT-MARGIN and the RIGHT-MARGIN.
02100 The commands are shown below, where the
02200 letter Q represents any character, and is used to select a
02300 q-register -- however, if Q is the right-apostrophe "'", then
02400 instead of reading from a q-register, the octal digits from here
02500 to the next semicolon are assembled into an unsigned constant
02600 and that constant acts as an immediate operand: $.
02700
02800 $←R$-L$/'12;$→w$←L$+w$→l$←R$-w$→r$.
02900 $FC1$FF←Q $F3(Load ac from q-reg)
03000 $FC1$FF+Q $F3(ac plus q-reg, result in ac)
03100 $FC1$FF-Q $F3(ac minus q-reg, result in ac)
03200 $FC1$FF¬Q $F3(q-reg minus ac, result in ac)
03300 $FC1$FF*Q $F3(ac times q-reg, result in ac)
03400 $FC1$FF/Q $F3(ac divided by q-reg, result (quotient) in ac)
03500 $FC1$FF\Q $F3(q-reg divided by ac, result (quotient) in ac)
03600 $FC1$FF~Q $F3(maximum of ac and q-reg, result in ac)
03700 $FC1$FF_Q $F3(minimum of ac and q-reg, result in ac)
03800 $FC1$FF→Q $F3(store contents of ac into q-reg, immediate operand not allowed)
03900 $FC1$FF↑Q $F3(move text up q/200 inch)
04000 $FC1$FF↓Q $F3(move text down q/200 inch)
04100 $FC1$FFj$F3 or $FC1$FFc$.
04200 $F3$j(same as $FC1$F3J and $FC1$F3C except it sets up temporary margins from q-registers
04300 l and r) $.
04400
04500 $F4Commands not yet implemented:
04600 $FC1$FF%Q $F3(ac divided by q-reg, remainder in ac)
04700 $FC1$FFULABR$F3$j(underline from location L to location R,
04800 on scan line A, with line thickness B -- each of L,A,B,R may be a q-reg
04900 or an immediate operand)$.
05000 $FC1$FF↔Q $F3(swap the ac with the q-reg, immediate operand not allowed)
05100
05200 $F4Special meanings of the Q character not implemented:
05300 $FF=<decimal digits>; $F3(Decimal immediate operand)
05400 $FFwq $F3(operand is width of character q in current font)
05500
00100 $F2$CThis writeup is $F1MRPP3.WRU[XGP,REM] $F31973 APR 01 0703 p.3
00200
00300 $F4Example of usage, making five columns on a page:$F3
00400 $FC1$FF←R$FC1$FF-L$FC1$FF/'5;$FC1$FF→w$FC1$FF. $F3q-reg w contains width of a col
00500 $FC1$FF←L$FC1$FF→1$FC1$FF+w$FC1$FF→2$FC1$FF+w$FC1$FF$.
00600 →3$FC1$FF+w$FC1$FF→4$FC1$FF+w$FC1$FF→5$FC1$FF. $F3q-reg's 1,2,3,4,5 contain the column loc's
00700 $FC1$FF←1$FC1$FF→.Hello$FC1$FF←2$FC1$FF→.This$FC1$FF←3$FC1$FF→.Is$FC1$FF←4$FC1$FF→$.
00800 .A$FC1$FF←5$FC1$FF→.Test.$FC1$FF. $F3one word in each column
00900 $←R$-L$/'5;$→w$. q-reg w contains width of a column
01000 $←L$→1$+w$→2$+w$→3$+w$→4$+w$→5$. q-reg's 1,2,3,4,5 contain the column loc's
01100 $←1$→.Hello$←2$→.This$←3$→.Is$←4$→.A$←5$→.Test.
01200 $←'20;$→↑$←'14;$→↓$.
01300 $←1$→.$F1X$←.$→a$F2$↑↑x+2-i$←.$→b$←a$→.$↓↓foo$←.$~b$→.$.
01400 $F1+Y$←.$→a$F2$↑↑2$←.$→b$←a$→.$↓↓baz$.
01500 $←2$→.$F1Guess$.
01600 $←3$→.$F2What$.
01700 $←4$→.$F3That$.
01800 $←5$→.$F4Was?
01900
02000 $←l$+w$→l$←r$-w$→r$. Change temporary margins
02100 $F3$jIf I add any new glorious features, the remainder of this page will
02200 show examples of the beautiful things you can use them for. For now,
02300 mostly blank space on this page...$.
02400 $|\\.Change escape character back to standard...
02500